package com.zjj.learn.javaplus.pkg03.demo303;

public class TestDemo303_1 {

    public static void main(String[] args) {
        Swim swim = new Swim() {
            @Override
            public void swimming() {
                System.out.println("要开始游泳了");
            }
        };
        swim.plan();
        swim.swimming();
    }


    /**
     * 匿名内部类
     *   【重点，常见的的函数式接口的使用，lambda 表达式的使用都是匿名内部类】
     * 什么事匿名内部类？
     *    匿名内部类就是没有名字的局部内部类
     *    使用匿名内部类的目的就是为了简化代码
     *
     *
     * 匿名内部类的具体实现：
     *     {@link com.zjj.learn.javaplus.pkg03.demo303.Swim}
     *     {@link com.zjj.learn.javaplus.pkg03.demo303.TestDemo303_1#main(String[])}
     *
     *
     * 匿名内部类格式：
     *         new 类名|抽象类|接口(形参){
     *             方法重写。
     *         }
     *
     * 匿名内部类的特点：
     *          1.匿名内部类是一个没有名字的内部类。
     *          2.匿名内部类一旦写出来，就会立即创建一个匿名内部类的对象返回。
     *          3.匿名内部类的对象的类型相当于是当前new的那个的类型的子类类型。
     *     小结：
     *          1.匿名内部类是一个没有名字的内部类。
     *          2.匿名内部类一旦写出来，就会立即创建一个匿名内部类的对象返回。
     *          3.匿名内部类的对象的类型相当于是当前new的那个的类型的子类类型。
     **/
}
